import { mapState } from 'vuex';
/**
 * 格式化 产品期限
 * @returns 
 */
export function swidmy(val) {
  let vals = "";
  if (val && val.indexOf("D") > -1) {
    vals = val.replace("D", "天");
  } else if (val && val.indexOf("M") > -1) {
    vals = val.replace("M", "个月");
  } else if (val && val.indexOf("Y") > -1) {
    vals = val.replace("Y", "年");
  } else {
    vals = val
  }
  return vals;
}


/**
 * 金额 去零取整
 * @param {*} num 
 * @returns 
 */
export function tranNumber(num) {
  if (!num) return num
  let numStr = num.toString();
  // console.log(numStr.length);
  if (numStr.length < 5) {
    return numStr;
  } else if (numStr.length >= 5) {
    let decimal = numStr.substring(
      numStr.length - 4,
      numStr.length - 4 + 0
    );
    // console.log(decimal);
    return parseFloat(parseInt(num / 10000) + "." + decimal) + "万";
  } else if (numStr.length > 5 && numStr.length > 8) {
    let decimal = numStr.substring(
      numStr.length - 8,
      numStr.length - 8 + 0
    );
    return parseFloat(parseInt(num / 100000000) + "." + decimal) + "亿";
  }
}

/**
 * 利率去零
 * @param {*} val 
 * @returns 
 */
export function rateReplaceZero(val) {
  // console.log(val);
  let reg = ''
  if (val) {
    reg = val.replace(/(0+)$/g, '')
    if (reg.slice(-1) == '.') {
      return Number(reg)
    } else {
      return reg
    }
  }
}

/**
 * 产品风险等级
 * @param {*} num 
 * @returns 
 */
export function IsTextRisk(val) {
  var Txts = "";
  if (val == '0') Txts = "未评定";
  else if (val == '1') Txts = "低风险";
  else if (val == '2') Txts = "中低风险";
  else if (val == '3') Txts = "中风险";
  else if (val == '4') Txts = "中高风险";
  else if (val == '5') Txts = "高风险";
  return Txts;
}

/**
 * 用户风险等级
 * @param {*} num 
 * @returns 
 */
export function userTextRisk(val) {
  var Txts = "";
  if (val == '0') Txts = "未评定";
  else if (val == '1') Txts = "保守型";
  else if (val == '2') Txts = "谨慎型";
  else if (val == '3') Txts = "稳健型";
  else if (val == '4') Txts = "进取型";
  else if (val == '5') Txts = "激进型";
  return Txts;
}

/**
 * 股票类型
 * @param {*} num 
 * @returns 
 */
export function AttrTxt(val) {
  var AttrType = "";
  if (val == '0') AttrType = "普通型";
  else if (val == '1') AttrType = "股票型";
  else if (val == '2') AttrType = "债券型";
  else if (val == '3') AttrType = "混合型";
  else if (val == '4') AttrType = "货币型";
  else if (val == '9') AttrType = "组合型";
  return AttrType;
}

/**
 * 基金类型
 * @param {*} num 
 * @returns 
 */
export function TypeStatus(val) {
  var FundType = "";
  if (val == '0') FundType = "开放期";
  else if (val == '1') FundType = "募集期";
  else if (val == '2') FundType = "发行成功";
  else if (val == '3') FundType = "发行失败";
  else if (val == '4') FundType = "停止交易";
  else if (val == '5') FundType = "停止申购";
  else if (val == '6') FundType = "停止赎回";
  else if (val == '7') FundType = "权益登记";
  else if (val == '8') FundType = "红利发放";
  else if (val == '9') FundType = "产品封闭期";
  else if (val == 'a') FundType = "产品终止";
  else if (val == 'b') FundType = "预约认购期";
  return FundType;
}

/**
 * 计算交易明细定位距离
 * @param {*} absolute 
 * @returns 
 */
export function fixedTop(val) {
  if (!val) {
    val = 0
  }
  let absolute = ''
  let navbar = this.$store.state.globalStore.navbarTop
  // console.log(navbar);
  absolute = (navbar + val) / 37.5 + 'rem'
  return absolute;
}

/**
 * 格式化日期 如 20210201 - 2021-02-01
 * @param {*} str 
 * @returns 
 */
export function formattingDDate(str) {
  if (str && str.length == 8) {
    let date = str.toString()
    let y = date.slice(0, 4)
    let m = date.slice(4, 6)
    let d = date.slice(6)
    return `${y}/${m}/${d}`
  } else {
    return ''
  }
}

/**
 * 格式化毫秒数日期
 * @param {*}  
 * @returns 
 */
export function formatStringDate(val) {
  let date = null
  if (val) {
    date = new Date(val)
  } else {
    date = new Date()
  }
  let year = date.getFullYear()
  let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
  let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
  return `${year}-${month}-${day}`;
}

/**
 * 格式化毫秒数日期时分秒
 * @param {*}  
 * @returns 
 */
export function formatStringDDate(val) {
  let date = null
  if (val) {
    date = new Date(val)
  } else {
    date = new Date()
  }
  let year = date.getFullYear()
  let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
  let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
  let hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
  let minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
  let seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

/**
 * 格式化时间 
 * @param {*} str 
 * @returns 
 */
export function format_time(str) {
  if (str && str.length == 5) {
    let string = '0' + str
    let date = string.toString()
    let y = date.slice(0, 2)
    let m = date.slice(2, 4)
    let d = date.slice(4)
    return `${y}:${m}:${d}`
  } else if (str && str.length == 6) {
    let date = str.toString()
    let y = date.slice(0, 2)
    let m = date.slice(2, 4)
    let d = date.slice(4)
    return `${y}:${m}:${d}`
  } else {
    return ''
  }
}

/**
 * 格式化说明书名称
 * @param {*} val 
 * @returns 
 */
export function format_file_name(val) {
  let nameType = "";
  if (val == 'A') { nameType = '证券投资基金投资人权益须知' }
  else if (val == 'B') { nameType = '基金招募说明书' }
  else if (val == 'C') { nameType = '基金合同' }
  else if (val == '1') { nameType = '风险提示' }
  else if (val == '2') { nameType = '自动续缴保费授权书' }
  else if (val == '3') { nameType = '投保提示书' }
  else if (val == '4') { nameType = '产品条款' }
  else if (val == '5') { nameType = '现金价值表' }
  else if (val == '6') { nameType = '基本保险金额' }
  else if (val == '7') { nameType = '产品说明书' }
  else if (val == '8') { nameType = '客户告知书' }
  else if (val == '9') { nameType = '投保单' }
  else if (val == '10') { nameType = '投资者声明' }
  else if (val == '11') { nameType = '电子合同书' }
  else if (val == '12') { nameType = '风险揭示书' }
  else if (val == '13') { nameType = '产品说明书' }
  else if (val == '14') { nameType = '客户维护费说明' }
  else if (val == '') { nameType = '其他' }
  return nameType
}

export function format_money(money, isSeparator, separator, decimal) {
  if (money == null) return money;
  if (decimal) {
    money = parseFloat(money).toFixed(decimal);
  }
  const isNegative = +money < 0;
  money = String(money); // 保证是字符串

  money = money.replace(/[^\d\.]/g, '');

  if (money[0] === '.') {
    // 如果是以 . 开头的话, 那么就追加一个 0
    money = '0' + money;
  }

  // 进行以 , 分隔金额
  if (!isSeparator) {
    const money_arr = money.split('.');
    const moneyInteger = money_arr[0].split('');
    const format_result = [];

    for (let index = moneyInteger.length - 1, counter = 0; index >= 0; index--) {
      counter++;
      format_result.unshift(moneyInteger[index]);
      if (!(counter % 3) && index !== 0) {
        format_result.unshift(separator || ',');
      }
    }

    if (money_arr.length === 2) {
      format_result.push('.' + money_arr[1]);
    }

    money = format_result.join('');
  }

  return `${isNegative ? '-' : ''}${money}`;
}

/**
 * 根据需求, 小数位最多为 2 位, 当不足2位时, 自动补全2位
 * @param {String | Number} money 格式化的金额
 * @param {Boolean} isPercentage 是否需要 % 默认需要
 * @returns 格式化后的内容
 */
export function format_money_decimal_jingdu(money, isPercentage) {
  money = String(money)
  if (money) {
    if (money.indexOf("%") != -1) {
      money = money.replace('%', '')
      return money
    } else {
      money = money * Math.pow(10, money.length) / Math.pow(10, money.length - 2)

      // 当小数位不足2位时, 自动补全
      if (!/^-?\d+\.\d{2}/.test(String(money))) {
        money = money.toFixed(2);
      } else {
        money = money.toFixed(2);
      }
      return String(money) + (!isPercentage ? '%' : '');
    }
  } else {
    return '0.00'
  }
}

/**
 * 根据需求, 小数位最多为 2 位, 当不足2位时, 自动补全2位
 * @param {String | Number} money 格式化的金额
 * @param {Boolean} isPercentage 是否需要 % 默认需要
 * @returns 格式化后的内容
 */
export function format_money_decimal_qiri_jingdu(money, isPercentage) {
  money = String(money)
  if (money) {
    if (money.indexOf("%") != -1) {
      money = money.replace('%', '')
      return money
    } else {
      money = money * Math.pow(10, money.length) / Math.pow(10, money.length)

      // 当小数位不足2位时, 自动补全
      if (!/^-?\d+\.\d{2}/.test(String(money))) {
        money = money.toFixed(2);
      } else {
        money = money.toFixed(2);
      }
      return String(money) + (!isPercentage ? '%' : '');
    }
  } else {
    return '0.00'
  }
}
export function formattingDate(str) { // 格式化日期 如 20210201 - 2021-02-01
  if (str && str.length == 8) {
    let date = str.toString()
    let y = date.slice(0, 4)
    let m = date.slice(4, 6)
    let d = date.slice(6)
    return `${y}-${m}-${d}`
  } else {
    return ''
  }
}

/**
 * 根据需求, 小数位最多为 4 位, 当不足四位时, 自动补全四位 -- 需求又变更了
 * @param {String | Number} money 格式化的金额
 * @param {Boolean} isPercentage 是否需要 % 默认需要
 * @param {Number} decimal 小数位个数, 默认 8 位
 * @returns 格式化后的内容
 */
export function format_money_decimal_jingzhi(money, isPercentage, decimal = 8) {
  money = (floatMultiply(parseFloat(money) || 0, Math.pow(10, decimal)) / Math.pow(10, decimal)).toFixed(4);

  // 当小数位不足四位时, 自动补全
  if (!/^-?\d+\.\d{4}/.test(String(money))) {
    money = money.toFixed(4);
  }

  return String(money) + (!isPercentage ? '%' : '');
}

// 乘法解决精度丢失
function floatMultiply(arg1, arg2) {
  if (arg1 == null || arg2 == null) {
    return null;
  }
  var n1, n2;
  var r1, r2; // 小数位
  try {
    r1 = arg1.toString().split('.')[1].length;
  } catch (error) {
    r1 = 0;
  }
  try {
    r2 = arg2.toString().split('.')[1].length;
  } catch (error) {
    r2 = 0;
  }
  n1 = Number(arg1.toString().replace('.', ''));
  n2 = Number(arg2.toString().replace('.', ''));
  return (n1 * n2) / Math.pow(10, r1 + r2);
}